#include<stdlib.h>  // 包含标准库头文件，用于exit函数
#include<stdio.h>   // 包含标准输入输出头文件，用于printf函数
#include<unistd.h>  // 包含Unix标准头文件，用于sleep函数
#include<sys/types.h>  // 包含系统类型头文件，用于定义数据类型
#include<signal.h>  // 包含信号处理头文件，用于信号处理相关函数
#include<sys/wait.h>  // 包含进程等待头文件，用于wait函数


// 信号处理函数，当接收到指定信号时调用
void handler(int sig){

    // 打印接收到的信号编号，并提示程序退出
    printf("信号 %d 捕获，程序退出\n",sig);

    // 调用exit函数，退出程序，返回状态0
    exit(0);
}


int main(int argc,char *argv[]){

    int count=0;  // 定义计数器变量，用于记录程序运行时间
    struct sigaction act;  // 定义sigaction结构体变量，用于设置信号处理方式
    act.sa_handler=handler;  // 设置信号处理函数为handler

    // 清空信号集，确保没有其他信号被阻塞
    sigemptyset(&act.sa_mask);
    act.sa_flags=0;  // 设置信号处理标志为0，表示不使用特殊功能
    // 设置SIGINT信号的处理方式为自定义的handler函数
    sigaction(SIGINT,&act,NULL);
    // 设置SIGTERM信号的处理方式为自定义的handler函数
    sigaction(SIGTERM,&act,NULL);
    // 无限循环，程序持续运行
    while(1){
        count++;  // 计数器自增，记录运行时间
        // 打印程序运行时间
        printf("程序运行了%d 秒\n",count);
        sleep(1);  // 程序暂停1秒
    }

    return 0;  // 程序正常退出，返回0
}